package com.vhall.component.entity.room.vo;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.vhall.component.entity.inav.vo.TagVO;
import com.vhall.component.entity.subject.enums.StatusEnum;
import com.vhall.component.framework.common.annotation.ParamName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author rui.zhou
 * @date 2021/5/12 15:16
 */
@Data
public class RoomsEntityVO extends RoomsEntityGuoXinVO implements Serializable {

    private String subject;

    @JsonProperty(value = "live_time")
    private String liveTime;

    @JsonProperty(value = "begin_time")
    private String beginTime;

    /**
     * 状态>0|待直播/预约,1|直播中,2|直播结束
     */
    private Integer status;

    @JsonProperty(value = "status_str")
    private String statusStr;

    @JsonProperty(value = "il_id")
    private Integer ilId;

    @JsonProperty(value = "room_id")
    private String roomId;

    private String name;


    @JsonProperty(value = "account_id")
    private Integer accountId;

    @JsonProperty(value = "channel_id")
    private String channelId;

    @JsonProperty("inav_id")
    private String inavId;

    @JsonProperty("nify_channel")
    private String nifyChannel;

    @JsonProperty("record_id")
    private String recordId;

    @JsonProperty("start_time")
    private LocalDateTime startTime;

    @JsonProperty("begin_time_stamp")
    private Integer beginTimeStamp;

    @JsonProperty("introduction")
    private String introduction;

    @JsonProperty("category")
    private Integer category;

    @JsonProperty("cover_image")
    private String coverImage;

    /**
     * app 端使用
     */
    private String image;

    /**
     * 例子：1,2,3,4
     */
    @JsonProperty("topics")
    private String topics;


    @JsonProperty("topics_list")
    @ParamName("topics_list")
    private List<TagVO> topicsList;

    @JsonProperty("layout")
    private Integer layout;

    /**
     * 是否删除>0|否,1|是
     */
    @JsonProperty("is_delete")
    private Integer isDelete;


    @JsonProperty("message_approval")
    private Integer messageApproval;

    @JsonProperty("created_at")
    private LocalDateTime createdAt;

    @JsonProperty("updated_at")
    private LocalDateTime updatedAt;

    @ApiModelProperty(value = "paasAppId")
    @JsonProperty("app_id")
    private String appId;

    @JsonProperty("pv")
    private Integer pv;

    @JsonProperty("like")
    private Integer like;

    @JsonProperty("deleted_at")
    private LocalDateTime deletedAt;

    /**
     * 直播类型 1 直播 2 假直播 3 点播
     */
    @JsonProperty("live_type")
    private Integer liveType;

    /**
     * 暖场类型| 0：图片 1：视频
     */
    @JsonProperty("warm_type")
    private Integer warmType;

    @JsonProperty("warm_vod_id")
    private String warmVodId;

    @JsonProperty("teacher_name")
    private String teacherName;

    @JsonProperty("begin_live_time")
    private LocalDateTime beginLiveTime;

    @JsonProperty("end_live_time")
    private LocalDateTime endLiveTime;

    @JsonProperty("is_open_document")
    private Integer isOpenDocument;

    @JsonProperty("live_mode")
    private Integer liveMode;

    @JsonProperty("message_total")
    private Integer messageTotal;

    /**
     * 模式>1|助理模式,0|普通模式
     */
    @JsonProperty("mode")
    private Integer mode;

    /**
     * 【标准版本定义】 0:登录1:报名 2:默认 3:白名单
     * 【兴业版本定义】2 全部观看 0 手机号 4 资金账号  5   普通会员、6白银会员、7黄金会员、8铂金会员
     */
    @JsonProperty("limit_type")
    private Integer limitType;

    private String extend;
    /**
     * 房间审核状态
     * 审核状态:
     * 0|待审核,-1|审核驳回,1|审核通过
     */
    @JsonProperty(value = "audit_status")
    private Integer auditStatus;

    /**
     * 房间审核状态
     * 审核状态:
     * 0|待审核,-1|审核驳回,1|审核通过
     */
    @JsonProperty(value = "audit_status_name")
    private String auditStatusName;

    /**
     * 房间审核备注
     */
    @JsonProperty(value = "audit_note")
    private String auditNote;

    /**
     * 分享简介
     */
    @JsonProperty(value = "share_introduction")
    @ParamName(value = "share_introduction")
    private String shareIntroduction;

    /**
     * 直播横竖屏 1横 2竖
     */
    @JsonProperty("video_type")
    @ParamName("video_type")
    private Integer videoType;

    /**
     * 曝光海报
     */
    @ParamName("poster_url")
    @JsonProperty("poster_url")
    private String posterUrl;

    /**
     * 设为热点标记位
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("hot_status")
    @ParamName("hot_status")
    private Integer hotStatus;

    /**
     * 推荐到优理宝首页标记
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("recommended_status")
    @ParamName("recommended_status")
    private Integer recommendedStatus;

    /**
     * 上下架标记，0 关、没上架，1开、上架
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("load_or_unload")
    @ParamName("load_or_unload")
    private Integer loadOrUnload;

    /**
     * 置顶标记
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("top_status")
    @ParamName("top_status")
    private Integer topStatus;

    /**
     * 预约标记
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("reservation_status")
    @ParamName("reservation_status")
    private Integer reservationStatus;

    /**
     * 评论标记
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("comment_status")
    @ParamName("comment_status")
    private Integer commentStatus;

    /**
     * 所属频道-name
     */
    @ParamName(value = "page_channel_name")
    @JsonProperty(value = "page_channel_name")
    private String pageChannelName;

    /**
     * 频道id
     */
    @ParamName("page_channel_id")
    @JsonProperty("page_channel_id")
    private Integer pageChannelId;

    /**
     * 审核人
     */
    @JsonProperty("reviewer")
    @ParamName("reviewer")
    private Integer reviewer;

    /**
     * 审核人
     */
    @JsonProperty("reviewer_name")
    @ParamName("reviewer_name")
    private String reviewerName;

    /**
     * 上架时间
     */
    @JsonProperty("load_or_unload_at")
    @ParamName("load_or_unload_at")
    private LocalDateTime loadOrUnloadAt;

    /**
     * 置顶时间
     */
    @JsonProperty("top_status_at")
    @ParamName("top_status_at")
    private LocalDateTime topStatusAt;

//    /**
//     * 投资依据信息 list
//     */
//    @ParamName("invest_ref_list_detail")
//    @JsonProperty("invest_ref_list_detail")
//    private List<InvestRefResponseVO> investRefListDetail;

    /**
     * 投资依据信息
     * true 表示有
     * flase 表示没有
     */
    @ParamName("invest_ref_list_flag")
    @JsonProperty("invest_ref_list_flag")
    private Boolean investRefListFlag;

    /**
     * 主播名称
     */
    @ParamName(value = "user_name")
    @JsonProperty(value = "user_name")
    private String userName;

    /**
     * 拉流状态 1 拉流开始 2 拉流结束
     */
    @JsonProperty("pull_stream_status")
    @ParamName("pull_stream_status")
    private Integer pullStreamStatus;

    /**
     * 拉流地址
     */
    @JsonProperty("pull_stream_url")
    @ParamName("pull_stream_url")
    private String pullStreamUrl;

}
